A typical computer will include a variety of hardware circuit modules such as processors, baseboard memory controllers, interface components, memory, etc. The computer is programing instructions that allow a computer to perform different functions. Firmware is specialized programing instructions that provide the low-level control for the specific hardware of the device. Firmware is typically stored in non-volatile memory devices such as read only memory (ROM), erasable programmable read only memory (EPROM), or flash memory. The firmware is typically executed by a main chip, such as a central processing unit or baseboard management controller. In order to function efficiently, firmware in permanent memory allows a main chip, such as a processor, ready and rapid access to critical operating instructions to control the components in the computer.
The advantage of firmware embodied as hardwired circuitry is that rapid access and execution is possible. Traditionally, changing the firmware of a device is infrequent at best, given the hardwired circuitry. For example, traditional firmware memory devices, such as ROM, have permanent circuits installed and cannot be changed after manufacture. Recently, firmware has been stored on erasable non-volatile memory such as an electronically erasable programmable read only memory (EEPROM). Such types of memory retain the hardware nature of previous memory devices, thereby allowing rapid access and execution of the firmware. However, the erasable nature of the memory allows upgrades or correcting errors in firmware, without having to replace the entire memory device.
In a computer system, the main chip, such as a central processing unit (CPU), baseboard management controller (BMC), or micro-controller unit (MCU), runs the firmware to control the overall system. The firmware is designed to ensure the computer system works normally. The term “firmware image” is defined as a copy of the firmware code stored in the non-volatile memory. In abnormal events, such as an interruption to the power up sequence, the main chip will log the abnormal event to inform a user of a potential malfunction. In some cases, an abnormal event may cause the firmware image to crash. For example, in the case of a power loss during the loading of the firmware image to the main chip, an updated firmware image or an uncertain firmware image may not be loaded properly. In such cases, the inability to access the firmware image by the main chip prevents a successful boot, and therefore system operation cannot be performed.
Thus, there is a need for a system that allows automatic recovery of a firmware image in the event of a power loss. There is a further need for a system that allows the storage of a firmware image in other memory for automatic recovery of the firmware image. There is another need for a system that allows automatic storage of a backup firmware image when the firmware image is updated.